<?php 
class App_File
{
	
	static function uploadfiles($options){
		
		$uploadedFile = array();
		foreach($options as $fileOptions) {
		    $content_dir = $fileOptions['destination']; // dossier où sera déplacé le fichier
		
		    $tmp_file = $_FILES[$fileOptions['source']]['tmp_name'];
		
		    //URGENT faire des exceptions au lieu des exit..., puis améliorer et gérer plusieurs options (taille...)
		    if( !is_uploaded_file($tmp_file) )
		    {
		        exit("Le fichier est introuvable : " .$fileOptions['target']);
		    }
		
		    // on vérifie maintenant l'extension
		    $type_file = $_FILES[$fileOptions['source']]['type'];
		
		    if(is_array($fileOptions['extensions']) && !in_array(Wmp_File::getDirectories($fileOptions['target']),$fileOptions['extensions']))
		    {
		        exit("Le fichier est invalide, vérifier son extension ainsi que son poids...:".$fileOptions['target']);
		    }
		
		    // on copie le fichier dans le dossier de destination
		    $name_file = $fileOptions['target'];
		
		    if( !move_uploaded_file($tmp_file, $content_dir . $name_file) )
		    {
		        exit("Impossible de copier le fichier dans $content_dir");
		    }
		    $dbentryFiles[$fileOptions['target']]=$fileOptions['target'];	    
		}
		return $dbentryFiles;
	}
	
	static function getExtension($file)
	{
		// Make an array of the various attributes
		$path_parts = pathinfo($file);
		$extension = $path_parts['extension'];
		return $extension;		
	}
	
	//TODO : faire une possibilité de prévisualiser des fichiers
	//pdf, images, swf, flv. Faire un test sur l'extension
	//et appeler la commande adequate
	static function previewFile($file)
	{
		
	}
	
	static function getDirectories($path)
	{
		if ($handle = opendir($path)) {   
    		$files = array();			
    		while (false !== ($file = readdir($handle))) 
        		if ( $file != "." && $file != ".." ) 
            		$files[]=$file;
           
    		closedir($handle);
    		
    		return $files; 
		}
		return false;		
	}
		
	static function copyDirectory( $source, $target )
    {
        if ( is_dir( $source ) )  {
            @mkdir( $target );
           
            $d = dir( $source );
           
            while ( FALSE !== ( $entry = $d->read() ) )
            {
                if ( $entry == '.' || $entry == '..' )  {
                    continue;
                }
               
                $Entry = $source . '/' . $entry;           
                if ( is_dir( $Entry ) )  {
                    Wmp_File::copyDirectory( $Entry, $target . '/' . $entry );
                    continue;
                }
                copy( $Entry, $target . '/' . $entry );
            }
           
            $d->close();
        }else
        {
            copy( $source, $target );
        }
    }
	
	static function deleteDirectory($target)
	{
		$exceptions=array('.','..');
		if (!$sourcedir=@opendir($target))
		    return false;
		    
		while(false!==($sibling=readdir($sourcedir))) {
		    if(!in_array($sibling,$exceptions)) {
		        $object=str_replace('//','/',$target.'/'.$sibling);
		        
		        if(is_dir($object))
		            Wmp_File::deleteDirectory($object);
		        if(is_file($object))
		            $result=@unlink($object);
		    }
		}
		closedir($sourcedir);
		
		if($result=@rmdir($target))
		      return true;
		    
		return false;
	}
	
	static function getFiles($path)
	{
		if ($handle = opendir($path)) {   
    		$files = array();			
    		while (false !== ($file = readdir($handle))){ 
        		if(strpos($file, "Controller.php")!==false) {
        				$files[]=$file;
        		}
    		}
    		closedir($handle);
		}	
		return $files;
	}
}